# 网络配置

# 创建通道

如果有需要,可以使用参照4.3.2继续创建通道配置交易文件。这里我们使用上面已经创建的通道配置交易文件(channel.tx)创建mychannel。

在命令行窗口输入以下命令:

docker exec -it cli bash
1

成功执行后,进入如下管理界面:

进入管理界面

图 4-05_01 进入管理界面

注意:命令行管理节点默认环境是 peer0.org1.example.com。下图docker-compose-cli.yaml中配置了四个环境变量,如果要管理Org2节点,一定要用新的环境变量覆盖现有配置。

docker-compose-cli.yaml文件

图 4-05_02 docker-compose-cli.yaml文件

环境变量的解释如下:

# Environment variables for PEER0

CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
CORE_PEER_ADDRESS=peer0.org1.example.com:7051
CORE_PEER_LOCALMSPID="Org1MSP"
CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt

CORE_PEER_MSPCONFIGPATH       Org1 Admin的MSP证书文件
CORE_PEER_ADDRESS              peer0的地址
CORE_PEER_LOCALMSPID           Org1 MSP ID
CORE_PEER_TLS_ROOTCERT_FILE   Org1的TLS根证书文件,与Orderer进行加密通讯
1
2
3
4
5
6
7
8
9
10
11

输入以下命令创建通道:

export CHANNEL_NAME=mychannel

# the channel.tx file is mounted in the channel-artifacts directory within your CLI container
# as a result, we pass the full path for the file
# we also pass the path for the orderer ca-cert in order to verify the TLS handshake
# be sure to export or replace the $CHANNEL_NAME variable appropriately

peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
1
2
3
4
5
6
7
8

创建成功后,可以看到下图信息。

成功完成通道创建

图 4-05_03 成功完成通道创建

创建通道的知识点

peer channel命令包含以下7个子命令::

  • create
  • fetch
  • getinfo
  • join
  • list
  • signconfigtx
  • update

peer channel create命令是用来创建一个通道,并输出一个创世区块—— (mychannel.block)——包含了指定的通道配置信息,存储在Peer的文件系统中。具体用法如下:

-o, --orderer string       Ordering service endpoint
-c, --channelID string     通道名称,名字必须全部是小写,少于250个字符,正则表 达式: [a-z][a-z0-9.-]*
-f, --file string          配置通道交易文件用来提交给orderer节点
--tls                      与orderer交互时使用TLS进行通道加密,这里使用的是 orderer的tlscacerts下的pem证书
1
2
3
4

# 加入通道

输入以下命令将Org1的Peer0加入通道:

# By default, this joins ``peer0.org1.example.com`` only
# the <CHANNEL_NAME.block> was returned by the previous command
# if you have not modified the channel name, you will join with mychannel.block
# if you have created a different channel name, then pass in the appropriately named block

peer channel join -b mychannel.block
1
2
3
4
5
6

Org1 Peer0 成功加入通道

图 4-05_04 Org1 Peer0 成功加入通道

通过管理节点将组织Org2节点加入通道,需要指定所操作的指定组织Admin的MSP证书文件、peer的地址、组织 MSP ID、组织的TLS根证书文件,以及通道的创世区块——创建通道时产生的通道创世区块(mychannel.block)。

设置Org2的Peer0的环境变量,使用以下命令将Org2的Peer0加入通道:

CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp CORE_PEER_ADDRESS=peer0.org2.example.com:9051 CORE_PEER_LOCALMSPID="Org2MSP" CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt peer channel join -b mychannel.block
1

Org2 Peer0 成功加入通道

图 4-05_05 Org2 Peer0 成功加入通道

截止到现在,我们已经创建了一个拥有两个Peer的通道。

需要注意的是一旦执行了peer channel join 命令, 命令行环境变量就会重新设置为 peer0.org1.example.com(注意下图执行完命令前后变化)。

加入通道后环境变量恢复为初始值

图 4-05_06 加入通道后环境变量恢复为初始值

# 更新锚节点配置

锚节点负责组织中节点与其他组织中的节点进行Gossip 通信。

使用提前生成的锚节点配置更新文件,以组织管理员身份可以更新组织的锚节点配置。当前环境变量为peer0.org1.example.com,输入以下命令更新Org1的锚节点:

peer channel update -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/Org1MSPanchors.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
1

成功更新org1的锚节点

图 4-05_07 成功更新org1的锚节点

更新Org2锚节点,需要设置Org2 Admin的MSP证书文件、peer0的地址、Org2 MSP ID和Org2的TLS根证书文件,输入以下命令:

CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp CORE_PEER_ADDRESS=peer0.org2.example.com:9051 CORE_PEER_LOCALMSPID="Org2MSP" CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt peer channel update -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/Org2MSPanchors.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
1

成功更新org2的锚节点

图 4-05_08 成功更新org2的锚节点

通过本节的讲解,我们已经完成了创建通道、加入通道以及锚节点配置,至此Fabric网络已经完成设置。

下一节我们会使用链码进行网络测试。

Last Updated: 3/9/2020, 9:27:52 PM